import { request } from '@/utils/request'
import type { Tutorial, TutorialStep, TutorialQuery, PageResult } from '@/types/common'

export const tutorialApi = {
  // 获取教程列表（分页）
  getTutorialPage(params: TutorialQuery) {
    return request.get<PageResult<Tutorial>>('/tutorial/list', { params })
  },

  // 获取教程详情
  getTutorialDetail(id: number) {
    return request.get<any>(`/tutorial/${id}`)
  },

  // 获取推荐教程
  getRecommendTutorials(limit = 5) {
    return request.get<Tutorial[]>('/tutorial/recommend', { 
      params: { limit }
    })
  },

  // 获取免费教程
  getFreeTutorials(limit = 10) {
    return request.get<Tutorial[]>('/tutorial/free', { 
      params: { limit }
    })
  },

  // 搜索教程
  searchTutorial(keyword: string, page = 1, size = 10) {
    return request.get<PageResult<Tutorial>>('/tutorial/search', {
      params: { keyword, page, size }
    })
  },

  // 获取分类统计
  getCategoryStats() {
    return request.get('/tutorial/category-stats')
  },

  // 点赞/取消点赞教程
  likeTutorial(id: number) {
    return request.post(`/tutorial/${id}/like`)
  },

  // 收藏/取消收藏教程
  favoriteTutorial(id: number) {
    return request.post(`/tutorial/${id}/favorite`)
  },

  // 获取用户对教程的互动状态
  getTutorialInteraction(id: number) {
    return request.get(`/tutorial/${id}/interaction`)
  },

  // 增加浏览量
  increaseViewCount(id: number) {
    return request.post(`/tutorial/${id}/view`)
  }
}

export const tutorialStepApi = {
  // 根据教程ID获取步骤列表
  getTutorialSteps(tutorialId: number) {
    return request.get<TutorialStep[]>('/tutorial-step/list', { 
      params: { tutorialId }
    })
  },

  // 获取步骤详情
  getStepDetail(id: number) {
    return request.get<TutorialStep>(`/tutorial-step/${id}`)
  }
}
